package day5;

import java.util.Arrays;

public class demo2 {
    public static void main(String[] args) {
        int[] nums={12,-5,88,6,78,45};
        System.out.println(Arrays.toString(nums));
        quickSort(nums,0,nums.length-1);
        System.out.println(Arrays.toString(nums));
    }

    public static void quickSort(int[] nums,int begin,int end) {
        if(begin<end) {
        //1.计算基准数
        int index=getIndex(nums,begin,end);
        //2.使用递归 对前半部分元素在进行排序;
        quickSort(nums,begin,index-1);
        //3.使用递归 对前半部分元素在进行排序;
        quickSort(nums,index+1,end);
        }
    }

    //给基准数找到准确下标
    public static int getIndex(int[] nums,int begin,int end) {
        //设置基准数 假设第一个元素是基准数
        int temp=nums[begin];
        while(begin<end) {
            //从后往前 大于-1，小于赋值
            while (begin < end&&nums[end] >= temp) {
                end--;
            }
            nums[begin] = nums[end];
            //从前往后  小于+1，大于赋值
            while (begin < end && nums[begin] <= temp) {
                begin++;
            }
            nums[end] = nums[begin];
        }
        //出了循环，begin和end是相等的  这个位置就一定
        nums[end]=temp;
        return end;
    }
}
